package shuaige.jdk.多线程.base.线程的状态;

public class 线程的状态 {
    /**
     * New：新创建的线程，尚未执行；
     * Runnable：运行中的线程，正在执行run()方法的Java代码；
     * Blocked：运行中的线程，因为某些操作被阻塞而挂起；
     * Waiting：运行中的线程，因为某些操作在等待中；
     * Timed Waiting：运行中的线程，因为执行sleep()方法正在计时等待；
     * Terminated：线程已终止，因为run()方法执行完毕。
     */

    /**
     *             线程流转图
     *          ┌─────────────┐
     *          │     New     │
     *          └─────────────┘
     *                 │
     *                 ▼
     * ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
     *  ┌─────────────┐ ┌─────────────┐
     * ││  Runnable   │ │   Blocked   ││
     *  └─────────────┘ └─────────────┘
     * │┌─────────────┐ ┌─────────────┐│
     *  │   Waiting   │ │Timed Waiting│
     * │└─────────────┘ └─────────────┘│
     *  ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
     *                 │
     *                 ▼
     *          ┌─────────────┐
     *          │ Terminated  │
     *          └─────────────┘
     */

    /**
     * 线程终止的原因有
     * 线程正常终止：run()方法执行到return语句返回；
     * 线程意外终止：run()方法因为未捕获的异常导致线程终止；
     * 对某个线程的Thread实例调用stop()方法强制终止（强烈不推荐使用）。
     */
}
